<?php
/**
 * Permite hacer operaciones con la tabla zona de la base de datos
 * @package simertweb 
 * @subpackage models 
 * @category Administración
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com>
 * @version 1.0  
 */
class MZona extends CI_Model {

    public function __construct() {
        parent::__construct();
        $this->load->database();
        $this->load->model('mpersona');
        $this->load->model('mempleado');
        $this->load->model('mpersonal_operativo');
        $this->load->model('mhistorico');
    }

    /**
    * Obtiene los nombres de las zonas que estan en uso
    * @return type array
    */
    function listarZonasUso() { 
         $this->db->where('uso', 1);
        $query2 = $this->db->get('subcalle')->result();
        foreach ($query2 as $value) {
            $this->db->or_where('idZona', $value->idZona);
        }
        $query3 = $this->db->get('zonaestacionamiento');
        return $query3->result();
    }
    
   /**
    * Obtiene los nombres de las zonas que estan en uso
    * @return type array
    */
    function listarZonas() {        
        $query2 = $this->db->get('subcalle')->result();
        foreach ($query2 as $value) {
            $this->db->where('idZona !=', $value->idZona);
        }
        $query = $this->db->get('zonaestacionamiento');
        foreach ($query->result() as $value) {
            $this->db->where('idZona !=', $value->idZona);
        }
        $this->db->order_by('nombreZona', 'asc');
        $query3 = $this->db->get('zonaestacionamiento');
        return $query3->result();
    }

    /**
    * Obtiene los nombres de las zonas que estan en uso
    * @return type array
    */
    function listar_zonas() {   
        $this->db->where('uso', 1);
        $query2 = $this->db->get('subcalle')->result();
        foreach ($query2 as $value) {
            $this->db->where('idZona !=', $value->idZona);
        }
        $query = $this->db->get('zonaestacionamiento');
        foreach ($query->result() as $value) {
            $this->db->where('idZona !=', $value->idZona);
        }
        $this->db->order_by('nombreZona', 'asc');
        $query3 = $this->db->get('zonaestacionamiento');
        return $query3->result();
    }
    
    /**
     * Obtiene todos los nombres de las zonas
     * @return type
     */
    function listartodasZonas() {
        $this->db->order_by('nombreZona', 'asc');
        $query = $this->db->get('zonaestacionamiento')->result();
        return $query;
    }

    /**
     * Obtiene el id del nombre de una zona
     * @param type $zona es el nombre de la zona
     * @return type int
     */
    function indice($zona) {
        $this->db->where('nombreZona', $zona);
        $query = $this->db->get('zonaestacionamiento')->row()->idZona;
        return $query;
    }

    /**
     * Obtiene el nombre de una zona
     * @param type $id es id de una zona
     * @return type string
     */
    function zona($id) {
        $this->db->where('idZona', $id);
        $query = $this->db->get('zonaestacionamiento')->row()->nombreZona;
        return $query;
    }  

    /**
     * Guarda una zona de estacionamiento con las subcalles que la conforman
     */
    public function guardarZona() {
        //guarda los datos en la bd
        $data = array(//obtiene los datos del formulario y los almacena en las variables
            'nombre' => strtoupper($_POST['calle']),
            'secundaria1' => strtoupper($_POST['sec_1']),
            'X1' => $_POST['lon_1'],
            'Y1' => strtoupper($_POST['lat_1']),
            'secundaria2' => $_POST['sec_2'],
            'X2' => strtolower($_POST['lon_2']),
            'Y2' => strtoupper($_POST['lat_2']),
            'espAmarillos' => $_POST['amarillos'],
            'espAzules' => strtolower($_POST['azules']),
            'idZona' => strtolower($this->db->where('nombre', $_POST["zona"])->idZona)
        );
        $this->db->insert('subcalle', $data); //guarda los datos en la bd
        $id = mysql_insert_id();
        $this->mhistorico->guardar_acceso($id, "Asigncion de subcalles a una zona");
    }

    /**
     * Valida que el nombre de una zona no se duplique
     * @return boolean
     */
     function validar_zona() {
        $this->db->where('nombre', $_POST['zona']);
        $query = $this->db->get('zona');
        if ($query->num_rows() > 0) {
            return FALSE;
        } else {
            return TRUE;
        }
    }
    /**
     * Guarda el nombre de una zona
     * @param type $zona es el nombre de la zona
     */
    public function guardar($zona) {
        $data = array('nombreZona' => $zona);
        $lista = $this->listarZonas();
        $bandera = 0;
        foreach ($lista as $value) {
            if ($value->nombreZona == $zona) {
                $bandera = 1;
            }
        }
        if ($bandera == 0) {
            $this->db->insert('zonaestacionamiento', $data);
            $id = mysql_insert_id();
            $this->mhistorico->guardar_acceso($id, "Creación del nombre de una zona de trabajo");
        }
    }

    function validar_guardar($zona) {
        $this->db->where('nombreZona', $zona);
        $zona = $this->db->get('zonaestacionamiento')->num_rows();
        return $zona;        
    }
    
    /**
     * Valida que la zona no este contenida en una subcalle
     * @param type $zona es el nombre de la zona
     * @return boolean
     */
    function validar_eliminar($zona) {
        $this->db->where('nombreZona', $zona);
        $id = $this->db->get('zonaestacionamiento')->row()->idZona;
        foreach ($this->listarZonas()as $value) {
            if ($value->idZona == $id) {
                return TRUE;
                break;
            }
        }
    } 

       
    /**
     * Elimina el nombre de uuna zona
     * @param type $zona
     */
    function eliminar($zona) {
        $this->db->where('nombreZona', $zona);
        $id = $this->db->get('zonaestacionamiento')->row()->idZona;
        $this->db->delete('zonaestacionamiento', array('idZona' => $id));
        $this->mhistorico->guardar_acceso($id, "Eliminación del nombre de una zona");
    }

}

?>
